package com.zhl.framework.core.common;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
import io.netty.util.concurrent.EventExecutorGroup;

/**
 * @Author: ZhangLu In DLUT
 * @since: 1.0.0
 * @Description: Rpc 编码器，将传输的对象转换成数组 ByteBuf
 */
public class RpcEncoder extends MessageToByteEncoder<RpcProtocol> {

    @Override
    protected void encode(ChannelHandlerContext ctx, RpcProtocol msg, ByteBuf byteBuf) throws Exception {
        // 向 ByteBuf 中传入2字节的魔数
        byteBuf.writeShort(msg.getMagicNumber());
        // 向 ByteBuf 中写入4字节的内容长度
        byteBuf.writeInt(msg.getContentLength());
        // 向 ByteBuf 中写入字节数组
        byteBuf.writeBytes(msg.getContent());
    }
}
